package org.cardoso.web.jsf.converter;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

@FacesConverter("dateConverter")
public class DateConverter implements Converter {

	public Object getAsObject(FacesContext context, UIComponent component, String data) {

		if (data != null && data.length() == 10){
			
			int dia = Integer.parseInt(data.split("/")[0]);
			int mes = Integer.parseInt(data.split("/")[1]);
			int ano = Integer.parseInt(data.split("/")[2]);
			Calendar date = Calendar.getInstance();
			int anoAtual = date.get(Calendar.YEAR);
			
			if (dia < 32 && mes < 13 && ano > 1900 && ano < anoAtual){
				
				date.set(Calendar.DAY_OF_MONTH, dia);
				date.set(Calendar.MONTH, mes - 1);
				date.set(Calendar.YEAR, ano);
				
				return date.getTime();
			}
		}
			
		return null;
	}

	public String getAsString(FacesContext context, UIComponent component, Object valor) {
		
		if (valor != null){
			
			Locale LOCAL = new Locale("pt","BR"); 
			
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy",LOCAL);
			sdf.setTimeZone(TimeZone.getDefault());
			
			return sdf.format(valor);
		}
		else
			return "";
	}

}